home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 11
/
FM Towns Free Software Collection 11.iso
/
taropyon
/
cci
/
tifload.c
< prev
Wrap
C/C++ Source or Header
|
1993-09-20
|
5KB
|
191 lines
/*************************************************************************
* "tifload.cci" : TIFFデータの表示
*************************************************************************/
#include "ccilib.h"
/* パレットデータ(HEwin 配色) */
char PltDat[3][16] =
{
/* G R B */
{ 0, 0, 0}, /* C_BALCK, C_THROUGH */
{ 0, 0, 0}, /* C_BLUE , C_MBLACK */
{ 7, 7, 8}, /* C_RED */
{12,12,13}, /* C_MAGENTA */
{ 6, 5, 7}, /* C_GREEN */
{ 8, 7, 9}, /* C_CYAN */
{10, 9,11}, /* C_YELLOW */
{11,11,12}, /* C_WHITE */
{ 5, 5, 6}, /* C_HBALCK */
{ 0, 0,11}, /* C_HBLUE */
{ 0,11, 0}, /* C_HRED */
{ 0,11,11}, /* C_HMAGENTA */
{11, 0, 0}, /* C_HGEEN */
{11, 0,11}, /* C_HCYAN */
{11,11, 0}, /* C_HYELLOW */
{14,14,15} /* C_HWHITE */
};
char *IdlDspTime = NULL;
/*************************************************************************
* 初期化画面の描画
*************************************************************************/
int init_dsp()
{
DSP_writePage(1); /* 書き込みページ */
DSP_setPlt( PltDat ); /* パレット設定 */
DSP_title("TIFLOAD","0.99",C_HWHITE,C_WHITE,C_MBLACK,C_HBLACK);
IdlDspTime = evt_setDspTime( 1, 432, 4, C_WHITE, C_MBLACK ); /* 時刻表示アイドリング処理設定 */
SYL_clear();
}
/*************************************************************************
* 初期化
*************************************************************************/
int init()
{
DSP_sysInit(0); /* 表示システム初期化 */
KBF_sysInit(); /* キーボードシステム初期化 */
KBF_kan_off();
FDL_sysInit(); /* ファイルダイアログ初期化 */
sdk_control(0); /* サイドワーク起動禁止 */
DSP_writePage(0); /* 書き込みページ */
DSP_setPlt( PltDat ); /* パレット設定 */
DSP_boxf(0,24,639,463,PSET,COLMIX(5,6));
init_dsp();
}
/*************************************************************************
* 終了
*************************************************************************/
int term()
{
FDL_sysEnd();
KBF_sysEnd();
DSP_sysEnd();
}
/*************************************************************************
* TIFFデータ読み込み&表示
*************************************************************************/
int tif_load()
{
int i, x, y, ret, pixel, md, x0, y0;
short fr[4];
char *fdl; /* ファイルダイアログ用 */
char *fn; /* ファイル名取得用 */
char *img; /* TIFF表示用ワーク */
img = NULL;
x = y = DLGPOS_CENTER_OF_SCN; /* ダイアログ&メニュー表示位置 */
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl, "TIFF LOAD");
FDL_set_wildcard( fdl, "*.tif");
for(;;)
{
ret = FDL_start(fdl);
if ( ret != NORMAL )
break;
fn = FDL_get_filename(fdl);
if ( *fn == '\0' )
continue;
if ( (img = IMG_open()) == NULL )
{ /* error */
FDL_close(fdl);
return (ERR);
}
IMG_setPage(img ,0); /* 表示ページ指定 */
IMG_setAtt(img,IMG_ATT_PLTON); /* パレット設定属性ON */
if ( IMG_load(img,fn) == NORMAL )
{
IMG_getFr(img,fr); /* 画像データの大きさを取得 */
pixel = IMG_getPixel(img);
switch ( pixel )
{
case 1: /* モノクロ */
case 4: /* 16色 */
x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
md = 3;
break;
case 8: /* 256 色 */
x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
md = 14;
break;
case 16: /* 32768 色 */
x0 = (512 - (fr[2] - fr[0] + 1)) / 2;
y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
md = 17;
break;
default:
goto _TIF_ERR;
}
IMG_setPos(img,x0,y0); /* 表示位置補正 */
MOS_COFF(); /* マウスカーソル消去 */
EVT_idl_stop(IdlDspTime);
DSP_writePage(1);
EGB_color(EgbPtr,1,0);
EGB_clearScreen(EgbPtr);
EGB_resolution(EgbPtr,0,md); /* 画面モード設定 */
DSP_writePage(0);
EGB_color(EgbPtr,1,0);
EGB_clearScreen(EgbPtr);
IMG_dsp(img);
while ( kbhit() == 0 && MOS_pget(&x0,&y0) == 0 )
EVT_idl();
while ( MOS_pget(&x0,&y0) )
EVT_idl();
for ( i = 0; i < 2; ++i )
EGB_resolution(EgbPtr,i,3);
init_dsp();
KBF_clear();
EVT_idl_start(IdlDspTime);
} else
{
_TIF_ERR: MNU_sure( x, y, C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
SELBTN_ATT_CENTER, " %s \n Tiff load error!! ", fn );
}
if ( img )
{
IMG_close(img);
img = NULL;
}
}
FDL_close(fdl);
return (NORMAL);
}
/*************************************************************************
* MAIN
*************************************************************************/
int main()
{
init();
tif_load();
term();
return (0);
}